/* 基于链表的队列 */

#ifndef __QUEUE_BASE_LIST_H__
#define __QUEUE_BASE_LIST_H__

#include <stdio.h>
#include <stdlib.h>

/* 节点 */
typedef struct QueueNode 
{
	int               data; /* 数据 */
	struct QueueNode* next; /* 后指针 */
}QUEUE_NODE;

/* 队列 */
typedef struct Queue {
	QUEUE_NODE* front; /* 前端(弹出) */
	QUEUE_NODE* back;  /* 后端(压入) */
}QUEUE;

/* 创建 */
QUEUE* queue_create (void);

/* 销毁 */
void queue_destroy (QUEUE* queue);

/* 压入 */
void queue_push (QUEUE* queue, int data);

/* 弹出 */
int queue_pop (QUEUE* queue);


/* 清空 */
void queue_clear (QUEUE* queue);

/* 大小 */
int queue_size (QUEUE* queue);

/* 判空 */
int queue_empty (QUEUE* queue);

#endif /* _QL_H */
